/* eslint-disable */
/**
 * @description: 事件处理类，提供简单的事件监听和触发功能。
 */
class eventSimpleHandler {
  eventList: Array<{ event: Function }>
  constructor() {
    this.eventList = []
  }
  /**
   * 触发所有已注册的事件，传递参数给事件处理函数。(tips:已注册的事件事件为当前所使用的是的事件处理类实例化对象)
   * @param args - 任意参数，传递给事件处理函数。
   */
  fire(...args: any[]) {
    const _this = this
    for (const obj of this.eventList) {
      obj.event.apply(_this, args)
    }
  }
  /**
   * 注册一个事件处理函数，返回一个函数用于移除该事件。
   * @param {Function} event - 事件处理函数。
   * @returns {Function} 移除事件的函数。
   */
  on(event?: Function): Function {
    if (typeof event !== 'function') return () => {}
    const obj = { event } // 键名是event 而值是event变量
    this.eventList.push(obj)
    return () => {
      this.eventList.splice(this.eventList.indexOf(obj), 1)
    }
  }
}

export default eventSimpleHandler
